/**
* @module QL  @diego 16/11/04
*/
var QL = QL || {};
/**
* 返回指定的命名空间，如果命名空间不存在则创建命名空间。
* 备注：命名时需小心，注意保留关键字，可能在一些浏览器无法使用。
*
* @method namespace
* @param {String *} 至少需要创建一个命名空间
* @return {Object} 最后一个命名空间创建的对象的引用
*/
QL.namespace = function(str){
  var parts = str.split("."),
      parent = QL,
      i,
      l;
  if( parts[0] == 'QL') {
    parts = parts.splice(1);
  }
  for ( i = 0,l = parts.length; i < l; i++) {
    if (typeof parent[parts[i]] === 'undefined') {
      parent[parts[i]] = {};
    }
    parent = parent[parts[i]];
  }
  return parent;
}
QL.even = {
  /**
  * @method popover popover框，用户头像和名字经过的时候显示
  * @param {Array} 要加载popover框的对象
  */
  popover: function(obj){
    obj.mouseenter(function(){
        var next = $(this).next(".ql-popover"),
            direction = next.attr("class"),//根据类名判断popover框的方向
            offset = $(this).offset(),
            objWidth = $(this).width(),  //得到当前对象的宽度值
            top = offset.top,
            left = offset.left -252 +objWidth;//当前距离左边的距离减去popover的宽  因为左边显示的是经过头像的  所以还要加上图像的宽度   for left popover
        if (direction.indexOf("left") > 0) {//头像的左边，默认是下面
            next.css({"top": top + 55 +'px','left': left + 'px'}).show();
        } else {
            next.css({"top":top + 40 +'px','left': offset.left + 'px'}).show();
        }
        if (direction.indexOf('relative')>0){//针对讨论区回复下的评论，因为评论的容器dc带了relative属性，上面的方法会导致位置偏差
          next.css({"top":$(this).position().top + 40 +'px','left': '40px'}).show();
        }
        if( $(".ql-warp").height() - top < 250 ){//部分页面底部还有聊天内容 ，并且距离footer还很近二者的高度低于popover框的时候，调整为右方向
            next.addClass("right");
            next.css({"top": top - 100 + 'px','left': offset.left + objWidth + 25 + 'px'}).show();
        }
    }).mouseleave(function(){
        $(this).next(".ql-popover").hide();
    });
  },
  /**
  * @method dropdownHover 把bootstrap的dropdown增加鼠标经过显示
  */
  dropdownHover:function(){
    $(".dropdown").mouseenter(function(){
        $(this).find(".dropdown-toggle").attr("aria-expanded",true);
        $(this).addClass("open");
    }).mouseleave(function(){
        $(this).find(".dropdown-toggle").attr("aria-expanded",false);
        $(this).removeClass("open");
    });
  },
  /**
  * @method editor  markdown编辑器
  * @param {obj}  textarea id
  * @param {width} 期望的编辑器宽度
  * @param {height} 期望的编辑器高度
  */
  editor:function(obj,w,h){
    editormd("test-editormd", {
        width: w || 500,
        height: h || 400,
        toolbarAutoFixed: false,
        path: 'http://www.qlcoder.com/lib/',
        onload: function () {
        }
    });
  },
  /**
  * @method time 返回当前时间
  * @return format YYYY-MM-DD
  */
  time:function(){
    var t = new Date();
    var y = t.getFullYear();
    var m = t.getMonth()+1;
    var d = t.getDate();
    return (y+"-"+m+"-"+d);
  },
  /**
  *@method scrollVote 讨论区页面滚动时候对应回复的点赞要实时展示
  */
  scrollVote:function(){
    $(window).scroll(function (e) {
        var scrolltop = $(this).scrollTop();
        $(".ql-apart").each(function(){
            var top = $(this).offset().top;
            var height = $(this).height();
            if(height > 200){
                if(scrolltop > top +44 && scrolltop < top + height - 100){
                    $(this).find(".vote").css({"position":"fixed","top":"10px","z-index":1});
                }else{
                    $(this).find(".vote").removeAttr("style");
                }
            }
        })
    })
  },
  /**
  *@method highlight 代码高亮
  */
  highlight:function(){
    $('pre code').each(function(i,block){
      hljs.highlightBlock(block);
  		if($(this).parents("pre").hasClass("prettyprint"))
  		{
  			return;
  		}
      var lines = $(this).text().split('\n').length - 1;
      var $numbering = $('<ul/>').addClass('pre-numbering');
      $(this)
              .addClass('has-numbering')
              .parent()
              .append($numbering);
      for(i=1;i<=lines+1;i++){
          $numbering.append($('<li/>').text(i));
      }
      $('.pre-numbering li').css("height","16px");
  	});
  },
  /**
  *@method clipboard  复制内容到剪切板
  */
  clipboard:function(){
    $("pre").each(function(){
		var height = $(this).find("code").height();
        $(this).prepend('<a class="btn clipboard" data-clipboard-snippet title="复制代码"><i class="iconfont icon-fuzhi"></i></a>');
        if(height>300){
            $(this).append('<a href="javascript:;" class="fr collapsed" data-flag="1">展开</a>');
      			//$(this).parent(".markdown-body").append('<a href="javascript:;" class="show-code">show code</a>')
      			$('<a href="javascript:;" class="show-code">show code</a>').insertAfter($(this));//16.09.26
        }
    });
    var clipboard = new Clipboard('pre .clipboard', {
        target: function(trigger) {
            return trigger.nextElementSibling;
        }
    });
    $("pre .clipboard").each(function () {
        var _this = this;
        $(_this).mouseleave(function(){
            $(this).attr("class","btn clipboard").removeAttr("aria-label");
        })
    });
    clipboard.on('success', function(e) {
        e.clearSelection();
        showTooltip(e.trigger,'Copied!');
    });

    clipboard.on('error', function(e) {
        showTooltip(e.trigger,fallbackMessage(e.action));
    });
    function showTooltip(elem,msg){
        elem.setAttribute('class','btn clipboard tooltipped tooltipped-s');
        elem.setAttribute('aria-label',msg);
    }
    function fallbackMessage(action){
        var actionMsg='';
        var actionKey=(action==='cut'?'X':'C');
        if(/iPhone|iPad/i.test(navigator.userAgent)){
            actionMsg='No support :(';
        }else if(/Mac/i.test(navigator.userAgent)){
            actionMsg='Press ⌘-'+ actionKey+' to '+ action;
        }else{
            actionMsg='Press Ctrl-'+ actionKey+' to '+ action;
        }
        return actionMsg;
    }
  }
};

$(document).on("focus",".comment-main .edit",function(){
    $(this).removeClass("empty").next().removeClass("none");
})
$(document).on("blur",".comment-main .edit",function(){
    if($(this).html()==""){
        $(this).addClass("empty");
    }
});
$(document).on("click",".comment-main .cancel",function(){
   $(this).parent().addClass("none").parent(".comment-main").find(".edit").addClass("empty").html("");
});
$(document).on("click",".commentOtherBtn",function () {
    var parent = $(this).parents(".media");
    parent.siblings(".media").find(".comment-main").addClass("none");
    $(this).parents(".comment-body").find(".comment-main").toggleClass("none");
});
$(document).on('click',"pre .collapsed",function(){
    var flag = $(this).attr("data-flag");
    if(flag == 1){
    		$(this).parent("pre").next(".show-code").remove();
        $(this).parent("pre").css("max-height","inherit");
        $(this).attr("data-flag",2).html("折叠");
    }else{
        $(this).parents("pre").removeAttr("style");
        $(this).attr("data-flag",1).html("展开");
    }
});
